package com.pig4cloud.pig.common.swagger.annotation;


import io.swagger.v3.oas.annotations.media.Schema;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Swagger扩展注解
 * 用于application/json请求
 * 并使用诸如Map或JSONObject等非具体实体类接收参数时,对参数进行进一步描述
 *
 * 例如
 *  @ApiJsonModel({
 *             @Schema(name = "skuId", description = "sku_id"),
 *             @Schema(name = "code", description = "支付宝code"),
 *             @Schema(name="otherType",description = "其他类型",type = "integer")
 *      })
 *
 */
@Target({ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiJsonModel {
    /**
     * 原生Swagger注解 用于描述具体字段
     * accessMode,extensions配置将无效
     *
     * @return value
     */
    Schema[] value() default {};

    /**
     * 自定义 Model的名字，非必填（为空系统指定）
     */
    String modelName() default "";
}